package com.ekingstar.lss.commons.supper.utils.query;

import java.util.List;

/**
 * 语句封装对象。
 */
public interface LssQuery {
	
	/**
	 * 是否为统计类型语句。
	 * @return true表示为统计类型，否则不是。
	 */
	boolean isCount();
	
	/**
	 * 是否为分组语句。
	 * @return true表示为分组类型，否则不是。
	 */
	boolean isGroup();
	
	/**
	 * 语句是否排序。
	 * @return true为排序语句，否则不是。
	 */
	boolean isOrder();
	
	/**
	 * 检测语句是否正确
	 * @return
	 */
	boolean checkQuery();
	
	/**
	 * 获取排序字段对象。
	 * @return 对象列表
	 */
	List<LssOrder> getOrders();
	
	/**
	 * 获取统计字段对象。
	 * @return 对象列表
	 */
	List<LssCount> getCounts();
	
	/**
	 * 获取分组字段对象。
	 * @return 对象列表
	 */
	List<LssGroup> getGroups();
	
	/**
	 * 获取查询条件。
	 * @return 对象列表。
	 */
	List<LssCondition> getConditions();
	
	/**
	 * 获取分页对象。
	 * @return 分页对象。
	 */
	LssLimit getLimit();
	
	/**
	 * 获取语句字符串。
	 * @return 语句。
	 */
	String getContent();
	
	/**
	 * 获取查询目标。
	 * @return 表名或对象名称。
	 */
	LssTarget getTarget();
	
	/**
	 * 获取查询列表。
	 * @return 对象列表。
	 */
	List<String> getColumns();
}
